package com.f.manage.单列模式;

public class Singleton2 {
    /**
     *  静态内部类实现（线程安全）
     * 说明： 首先，当外部类 Singleton 被加载时，静态内部类 SingletonHolder 并没有被加载进内存。当调用 getUniqueInstance() 方法时，会运行 return SingletonHolder.INSTANCE; ，触发了 SingletonHolder.INSTANCE ，此时静态内部类 SingletonHolder 才会被加载进内存，并且初始化 INSTANCE 实例，而且 JVM 会确保 INSTANCE 只被实例化一次。
     *
     * 优点： 延迟实例化，节约了资源；且线程安全；性能也提高了。
     */
    private Singleton2() {
    }

    private static class SingletonHolder {
        private static final Singleton2 INSTANCE = new Singleton2();
    }

    public static Singleton2 getUniqueInstance() {
        return SingletonHolder.INSTANCE;
    }

}
